package com.runen.infinitemovement.track.recorduitl;


/**
 * Author: SXF
 * E-mail: xue.com.fei@outlook.com
 * CreatedTime: 2017/12/22 0:02
 * <p>
 * HealthUtil
 */

public class HealthUtil {

    /**
     * 运动系数-健走
     */
    public static final double K_WALKING = 0.8214f;

    /**
     * 运动系数-跑步
     */
    public static final double K_RUNNING = 1.036f;

    /**
     * 运动系数-自行车
     */
    public static final double K_RIDING = 0.6142f;

    /**
     * 运动系数-轮滑、溜冰
     */
    public static final double K_SKATING = 0.518f;

    /**
     * 运动系数-室外滑雪
     */
    public static final double K_SKIING = 0.888f;

    private HealthUtil() {
        throw new UnsupportedOperationException(
                "HealthUtil cannot be instantiated");
    }

    /**
     * 卡路里换算
     *
     * @param weight 体重（kg）
     * @param km     距离（km）
     * @param k      运动系数（k）
     * @return 卡路里（kcal）
     */
    public static double getCalorie(double weight, double km, double k) {
        return weight * km * k;
    }

    /**
     * 卡路里 热量(kcal)=体重(kg)×运动时间(分钟)×指数K
     * <p>
     * 一小时8公里 K=0.1355
     * <p>
     * 一小时12公里 K=0.1797
     * <p>
     * 一小时15公里 K=0.1875
     * <p>
     *
     * @param weight   体重 单位（Kg）
     * @param distance 距离 单位（米）
     * @param period   时间 单位（秒）
     * @return 卡路里 单位（kcal）
     */
    public static double getCalorie(double weight, double distance, long period) {
        double k = getK(distance, period);
        return weight * (period / 60) * k;
    }

    /**
     * 步数换算距离
     *
     * @param height 身高（米）
     * @param step   步数
     * @return 距离（米）
     */
    public static double getDistance(double height, Integer step) {
        return getStride(height) * step;
    }

    /**
     * 计算步幅度
     *
     * @param height 身高(米)
     * @return
     */
    public static double getStride(double height) {
        return height * 0.38f;
    }

    /**
     * 运动系数
     *
     * @param distance 距离 单位（米）
     * @param period   时间 单位（秒）
     * @return
     */
    public static double getK(double distance, long period) {
        double speed = getSpeed(distance, period);
        if (speed >= 15)
            return 0.1875f;
        else if (speed >= 12)
            return 0.1797f;
        else if (speed >= 8)
            return 0.1355f;
        else
            return 0.1355f;
    }

    /**
     * 获取速度
     *
     * @param distance 距离 单位（米）
     * @param period   时长 单位（小时）
     * @return 速度 单位（公里/小时）
     */
    public static double getSpeed(double distance, long period) {
        return (distance / 1000) / (period / 3600.0f);
    }

    /**
     * 获取配速
     *
     * @param distance 距离 单位（米）
     * @param period   时间 单位（秒）
     * @return
     */
    public static String getFullPace(double distance, long period) {
        double pace = getPace(distance, period);
        return getFullPace(pace);
    }

    /**
     * 获取配速
     *
     * @param pace 速度
     * @return 00′00″
     */
    public static String getFullPace(double pace) {
        int minute = (int) pace;
        int seconds = (int) ((pace - minute) * 60);
        return (minute < 10 ? "0" + minute : minute) + "′" + (seconds < 10 ? "0" + seconds : seconds) + "″";
    }

    public static int getFullSeconds(double pace) {
        int minute = (int) pace;
        int seconds = (int) ((pace - minute) * 60);
        return minute * 60 + seconds;
    }

    /**
     * 获取配速
     *
     * @param distance 距离 单位（米）
     * @param period   时间（分钟）
     * @return 配速 单位（分钟/公里）
     */
    public static double getPace(double distance, long period) {
        if (distance == 0) {
            return 0;
        }
        return (period / 60.0f) / (distance / 1000.0f);
    }

    /**
     * 获取卡路里消耗的食物
     *
     * @param calorie 卡路里 单位（卡）
     * @return 食物
     */
//    public static ArrayList getCalorieFood(int calorie) {
//        ArrayList arrayList = new ArrayList();
//        String str = "";
//        int drawable = R.drawable.ic_transparent;
//        if (calorie < 5) {
//            str = "请继续加油";
//            drawable = R.drawable.ic_comeon;
//        } else if (calorie >= 5 && calorie <= 10) {
//            str = "消耗了一颗花生米";
//            drawable = R.drawable.ic_peanut;
//        } else if (calorie > 10 && calorie <= 20) {
//            str = "消耗了一颗腰果";
//            drawable = R.drawable.ic_nut;
//        } else if (calorie > 20 && calorie <= 30) {
//            str = "消耗了两颗腰果";
//            drawable = R.drawable.ic_nuts;
//        } else if (calorie > 30 && calorie <= 40) {
//            str = "消耗了一块巧克力";
//            drawable = R.drawable.ic_chocolate;
//        } else if (calorie > 40 && calorie <= 75) {
//            str = "消耗了一个水饺";
//            drawable = R.drawable.ic_dumplings;
//        } else if (calorie > 75 && calorie <= 100) {
//            str = "消耗了一个鸡蛋";
//            drawable = R.drawable.ic_egg;
//        } else if (calorie > 100 && calorie <= 120) {
//            str = "消耗了一碗米饭";
//            drawable = R.drawable.ic_meal;
//        } else if (calorie > 120 && calorie <= 135) {
//            str = "消耗了一根火腿";
//            drawable = R.drawable.ic_ham;
//        } else if (calorie > 135 && calorie <= 150) {
//            str = "消耗了一听可乐";
//            drawable = R.drawable.ic_cola;
//        } else if (calorie > 150 && calorie <= 170) {
//            str = "消耗了一串烤肉";
//            drawable = R.drawable.ic_kebab;
//        } else if (calorie > 170 && calorie <= 190) {
//            str = "消耗了一碗蒸蛋";
//            drawable = R.drawable.ic_steamed;
//        } else if (calorie > 190 && calorie <= 200) {
//            str = "消耗了一个面包";
//            drawable = R.drawable.ic_mb;
//        } else if (calorie > 200 && calorie <= 230) {
//            str = "消耗了一个冰淇淋";
//            drawable = R.drawable.ic_icecream;
//        } else if (calorie > 230 && calorie <= 250) {
//            str = "消耗了一根鸭脖";
//            drawable = R.drawable.ic_duckneck;
//        } else if (calorie > 250 && calorie <= 270) {
//            str = "消耗了一份薯条(小)";
//            drawable = R.drawable.ic_chips;
//        } else if (calorie > 270 && calorie <= 300) {
//            str = "消耗了一根油条";
//            drawable = R.drawable.ic_friedbread;
//        } else if (calorie > 300 && calorie <= 350) {
//            str = "消耗了一份意大利面";
//            drawable = R.drawable.ic_noodles;
//        } else if (calorie > 350 && calorie <= 430) {
//            str = "消耗了一份薯条(中)";
//            drawable = R.drawable.ic_chips;
//        } else if (calorie > 430 && calorie <= 500) {
//            str = "消耗了一份薯条(大)";
//            drawable = R.drawable.ic_chips;
//        } else if (calorie > 500 && calorie <= 550) {
//            str = "消耗了一个汉堡";
//            drawable = R.drawable.ic_hamburger;
//        } else {
//            str = "亲,你该休息了!";
//            drawable = R.drawable.ic_strong;
//        }
//        arrayList.add(str);
//        arrayList.add(drawable);
//        return arrayList;
//    }

    /**
     * 获取距离对应的碳排放
     *
     * @param distance 距离 单位（米）
     * @return 碳排放
     */
    public static double getDistanceCarbon(double distance) {
        String value = "";
        double c = (double) ((distance / 1000f) * 270f);
        return c;
    }


}
